package com.ljc;

/**
 * @author clj
 * @date 2022/9/2
 * @desc
 * Given a non-negative integer x, compute and return the square root of x.
 * Since the return type is an integer, the decimal digits are truncated, and only the integer part of the result is returned.
 * Note: You are not allowed to use any built-in exponent function or operator, such as pow(x, 0.5) or x ** 0.5.
 *
 * Example 1:
 * Input: x = 4
 * Output: 2
 *
 * Example 2:
 * Input: x = 8
 * Output: 2
 * Explanation: The square root of 8 is 2.82842..., and since the decimal part is truncated, 2 is returned.
 */
public class E69MySqrt {

    public static void main(String[] args) {
        int x = 9;
        int r = mySqrt(x);
        System.out.println(r);
    }

    public static int mySqrt(int x) {
        if (x == 0) {
            return 0;
        }
        int ans = (int) Math.exp(0.5 * Math.log(x));
        System.out.println("x : " + x);
        System.out.println("ans : " + ans);
        System.out.println("ans+1 : " + (ans + 1));
        System.out.println("(ans+1)*(ans+1) : " + ((ans+1)*(ans+1)));
        return (long) (ans + 1) * (ans + 1) <= x ? ans + 1 : ans;
    }


}
